package ar.com.muebleria.model.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.log4j.Logger;
import ar.com.muebleria.beans.MenuItem;
import ar.com.muebleria.colecciones.MenuItems;
import ar.com.muebleria.model.Conector;

public class DAOMenu {
	private Connection connection;
	public DAOMenu(){
		Conector conector = Conector.getInstance();
		connection = conector.getConnection();
	}

	public void close(){
		try {
			connection.close();
		} catch (SQLException e) {
			Logger.getLogger("daoMenu").error(e);
		}
	}
	public MenuItems obtenerOpciones(){
		MenuItems out = new MenuItems();
		
		String sqlSelect = "SELECT *" +
				           "  FROM menu m;";
		
		Statement sentencia = null;
		try {
			Logger.getLogger("daoMenu").info("Creando el statement.");
			sentencia = connection.createStatement();
		} catch (SQLException e) {
			Logger.getLogger("daoMenu").error("Error al crear el Statemnet",e);
		}
		ResultSet rs = null;
		try {
			Logger.getLogger("daoMenu").info("Creando resultSet de consulta.");
			Logger.getLogger("daoMenu").info("Se ejecutara " + sqlSelect);
			rs = sentencia.executeQuery( sqlSelect );
		} catch (SQLException e) {
			Logger.getLogger("daoMenu").error("Error en la ejecucion del query. " + sqlSelect,e);
		}
		try {
			while (rs.next()) {
				
				MenuItem item = new MenuItem();
				item.setDescripcion(rs.getString("DESCRIPCION"));
				item.setItemId(rs.getString("ID_MENU"));
				item.setPadreId(rs.getString("PADRE"));
				item.setPrograma(rs.getString("PROGRAMA"));
				Logger.getLogger("daoMenu").info("Se agrega un item de menu " + item.toString());
				out.add(item);
//				ID_MENU, DESCRIPCION, PROGRAMA, PADRE
			}
		} catch (SQLException e) {
			Logger.getLogger("daoMenu").error("Error al obtener los valores.",e);
		}finally{
			try {
				rs.close();
				sentencia.close();
			} catch (SQLException e) {
				Logger.getLogger("DAOProducto").error("No se cerro el Statement. ",e);

			}
		}
		
		return out;
	}
	
}
